package com.delos.rbac.context;

import com.delos.rbac.vo.UserVO;

import java.util.Map;

/**
 * 请求信息上下文信息存储
 *
 * @author zouyaowen
 * @date 2020-06-22
 */
public class RequestHolder {
    /**
     * 用户信息
     */
    private static ThreadLocal<UserVO> userInfo = new ThreadLocal<>();
    /**
     * 请求参数
     */
    private static ThreadLocal<Map<String, Object>> requestParamMap = new ThreadLocal<>();

    /**
     * 设置用户信息
     *
     * @param userVO 用户信息
     */
    public static void setUserInfo(UserVO userVO) {
        userInfo.set(userVO);
    }

    /**
     * 获取用户信息
     *
     * @return 获取用户信息
     */
    public static UserVO getUserInfo() {
        return userInfo.get();
    }

    /**
     * 设置请求信息
     *
     * @param paramMap 用户信息
     */
    public static void setRequestParamMap(Map<String, Object> paramMap) {
        requestParamMap.set(paramMap);
    }

    /**
     * 获取用户信息
     *
     * @return 获取用户信息
     */
    public static Map<String, Object> getRequestParamMap() {
        return requestParamMap.get();
    }


    /**
     * 清楚线程对象避免内存泄漏
     */
    public static void remove() {
        userInfo.remove();
        requestParamMap.remove();
    }
}
